# 方法和属性的prototype

print('------------私有属性和私有⽅法--------------------')


# 创建学校类
class School(object):
    def __init__(self):
        self.kongfu = '[⿊⻢煎饼果⼦配⽅]'

    def make_cake(self):
        print(f'运⽤{self.kongfu}制作煎饼果⼦')


# 1. 师⽗类
class Master(object):
    def __init__(self):
        self.kongfu = '[古法煎饼果⼦配⽅]'

    def make_cake(self):
        print(f'运⽤{self.kongfu}制作煎饼果⼦')


class Prentice(School, Master):
    data = '这是data'

    def __init__(self):
        self.kongfu = '[自创的方法]'
        self.__money = '私有属性'
        pass

    def make_cake(self):
        print(f'使用{self.kongfu}制作煎饼果子')
        pass

    # 调⽤⽗类⽅法，但是为保证调⽤到的也是⽗类的属性，必须在调⽤⽅法前调⽤⽗类的初始化
    def make_master_cake(self):
        Master.__init__(self)
        Master.make_cake(self)
        pass

    def make_school_cake(self):
        School.__init__(self)
        School.make_cake(self)
        pass

    def __print_info(self):
        print("不能访问私有方法")
        pass

    #   获取私有属性和设置私有属性都是和java一样,采用get,set方法
    def get_money(self):
        return self.__money

    def set_money(self, money):
        self.__money = money
        pass

    pass


class Tusun(Prentice):
    pass


precentice = Prentice()
print(precentice.get_money())
precentice.set_money(100)
print(precentice.get_money())

# 私有属性前面加上__
# print(precentice.__money)
# 私有方法也一样,在前面加上__
# precentice.print_info()
xiaoqiao = Tusun()
print(xiaoqiao.get_money())
xiaoqiao.set_money(200)
print(xiaoqiao.get_money())
# 不能继承私有属性
# print(xiaoqiao.__money)
# 不能继承私有方法
# xiaoqiao.__print_info()
print(Prentice.data)
